<?php

class AdminMenuEnum extends MenuEnum
{
    private static $UdoLeftMenu = array();

    private static $UdoUserMenus = array(
        'Account'                                       => array(
            self::TYPE   => self::MENU_TYPE_LEFT,
            self::PARENT => 0,                          //顶级模块
            self::LABEL  => 'account',
            self::TITLE  => '员工管理',
            self::URL    => '/account/teacherList'
        ),
        'Classes'                                       => array(
            self::TYPE   => self::MENU_TYPE_LEFT,
            self::PARENT => 0,
            self::LABEL  => 'classes',
            self::TITLE  => '班级管理',
            self::URL    => '/classes/classesList',
        ),
        'Permission'                                    => array(
            self::TYPE  => self::MENU_TYPE_LEFT,
            self::PARENT => 0,
            self::LABEL => 'permission',
            self::TITLE  => '权限分配表',
            self::URL   => '/permission/permissionTable',
        ),
        'Exercise'                                      => array(
            self::TYPE => self::MENU_TYPE_LEFT,
            self::PARENT => 0,
            self::LABEL  => 'classes',
            self::TITLE  => '题库管理',
            self::URL  => '/exercise/subjectSetting',
        ),
        'Course'                                        => array(
            self::TYPE => self::MENU_TYPE_LEFT,
            self::PARENT => 0,
            self::LABEL  => 'course',
            self::TITLE  => '我的课程',
            self::URL  => '/course/scheduleVideo',
        ),
        'Learning'                                      => array(
            self::TYPE => self::MENU_TYPE_LEFT,
            self::PARENT => 0,
            self::LABEL  => 'learning',
            self::TITLE  => '学情查看',
            self::URL  => '/learning/learningStudentList',
        ),
        'Teaching'                                      => array(
            self::TYPE => self::MENU_TYPE_LEFT,
            self::PARENT => 0,
            self::LABEL  => 'teaching',
            self::TITLE  => '教学查看',
            self::URL  => '/teaching/teachingTeacherList',
        ),
        'Provost'                                      => array(
            self::TYPE => self::MENU_TYPE_LEFT,
            self::PARENT => 0,
            self::LABEL  => 'provost',
            self::TITLE  => '教务工作',
            self::URL  => '/provost/provostGroup',
        ),
        'Information'                                      => array(
            self::TYPE => self::MENU_TYPE_LEFT,
            self::PARENT => 0,
            self::LABEL  => 'information',
            self::TITLE  => '信息导入',
            self::URL  => '/information/classImport',
        )
    );

    private static $userMenus = array(
        //超级管理员
        AdminEnum::SUPPER_ADMIN_ROLE   => array(
            'OpinionList',                     //反馈意见
            'OpinionDeleteAction',             //删除
            'OpinionAjax',                     //ajax
            'AddInviteCode',                   //邀请码
            'Captcha',                        //验证码
           'JsVerifyRegister',

            #登录
            'Login',                           //登录
            'DisposeLogin',                             //登录验证
            'CacheCate',                        //分类缓存
            #林场
            'forest_service',                           //林场服务
            'DeleteForest',                             //删除
            'ForestServiceAjax',                        //林场ajax返回
            'EditForest',
            #仓储
            'StorageService',                           //仓储服务
            'StorageImport',                            //仓储录入
            'StorageDelete',                            //删除
            'StorageServiceAjax',                       //林场ajax返回
            'StorageEdit',                              //编辑
            #钢厂
            'FactoryList',                           //仓储服务
            'FactoryImport',                            //仓储录入
            'FactoryDelete',                            //删除
            'FactoryServiceAjax',                       //林场ajax返回
            'FactoryEdit',                              //编辑
            #文章
            'ArticleList',                              //文章列表
            'ArticleImport',                            //文章录入
            'ArticleDelete',                            //文章删除
            'ArticleServiceAjax',                       //文章ajax返回
            'ArticleEdit',                              //文章编辑

            //广告位管理
            'AdsList',                                  //广告列表
            'AddAds',                                   //广告位添加
            'EditAds',                                  //广告位编辑
            'DelAds',                                   //广告位删除
            'AdsAjax',                                  //ajax返回

            #管理员
            'ManageAdmin',                              //管理员管理
            'AddAdmin',                                 //管理员添加
            'EditAdmin',                                //管理员编辑
            'DeleteAdmin',                              //管理员删除
            'AdminServiceAjax',                         //管理员ajax


            #日志
            'UserLog',                                  //用户日志
            'PlatformLog',                              //平台日志
            'DataLog',                                  //数据库日志
            'LogService',                               //日志
            'DeleteLog',                                //日志删除
            'LogServiceAjax',                           //日志ajax

            #商家管理
            'ManageSupplier',                           //商家管理
            'AddSupplier',                              //商家入驻
            'EditSupplier',                             //编辑商家
            'DelSupplier',                              //删除商家
            'SupplierAjax',                             //ajax返回
            'SupplierExamineList',                      //商家审核列表
            'SupplierExamine',                          //商家审核
            'SupplierExamineAction',                    //提交审核结果
            #订单
            'OrderList',                                //订单列表
            'DownOrderList',                            //下单列表
            'DownOrderImport',                          //下单
            'DownOrderImportAction',                   //订单入库
            'OrderDetails',                            //订单详情
            'Invoice',                                  //需开发票订单
            'UpdateInvoice',                            //完善发票信息
            'UpdateInvoiceAction',                      //完善发票信息入库
            'OrderStatusAjax',
            'OrderPayAdd',
            #流水
            'OrderPayListing',                         //收款记录列表
            'OrderPayDetails',                         //收款记录明细
            #资讯管理
            'NewsList',                                 //资讯列表
            'NewsImport',                               //资讯导入
            'NewsDeleteAction',                         //资讯刪除
            'NewsServiceAjax',                          //資訊ajax返回
            'NewsModifyAction',                         //資訊入库
            'NewsUpdateAction',                         //資訊修改


            #会员管理
            'ManageCustomer',                           //会员管理
            'MajiaList',                                //马甲列表
            'CustomerImport',                           //会员录入
            'CustomerEdit',                             //会员编辑
            'CustomerDelete',                           //会员删除
            'CustomerServiceAjax',                      //会员ajax返回


            #服务管理
            'forest_service',                           //林场服务
            'TransportService',                         //物流服务
            'TransportServiceAjax',                     //物流ajax返回
            'HarbourServiceAjax',                       //港口ajax返回
            'HarbourServiceAction',                     //港口服务

            'ForestImport',                             //林场录入
            'TransportModify',                          //物流线路录入
            'TransportModifyAction',                    //物流线路入库
            'TransportUpdateAction',                    //物流线路修改
            'TransportDeleteAction',                    //物流线路删除
            'StorageImport',                            //仓储录入
            'HarbourImport',                            //港口录入
            'HarbourDeleteAction',                      //港口删除
            'HarbourModifyAction',                      //港口入库
            'HarbourUpdateAction',                      //物流线路修改

            #订单
            'ForestNeed',                               //林场直供
            'HarbourNeed',                              //港口需求
            'StorageNeed',                              //仓储需求
            'InquiryList',                              //询价单列表
            'CustomizeList',                            //定制单列表
            'SupplyList',                               //供货单列表

            #品类
            'CategoryList',                             //品类管理
            'CategoryImport',                          //录入指向
            'CategoryImportAction',                   //品类入库
            'ProductCategoryDeleteAction',           //品类删除
            'ProductCategoryAjax',
            #规格
            'SpecList',                             //品类管理
            'SpecImport',                          //录入指向
            'SpecImportAction',                   //品类入库
            'ProductSpecDeleteAction',           //品类删除
            'ProductSpecAjax',
            #产品管理
            'ManageProduct',                            //产品管理
            'ProductPlace',                             //产地管理
            'ProductBrand',                             //品牌管理
            'ProductCate',                              //分类管理
            'ProductImport',                            //产品录入
            'ProductImportAction',                      //产品入库
            'ProductUpdateAction',                      //产品修改
            'ProductPlaceImport',                       //产地录入
            'ProductServiceAjax',                       //产品AJAX返回
            'ProductDeleteAction',                      //产品删除
            'ProductPlaceImportAction',                 //产地入库
            'ProductPlaceImport',                       //cd

            'ProductPlaceUpdateAction',                 //产地修改
            'ProductPlaceDeleteAction',                 //产地删除
            'ProductExamine',                           //产品审核
            'ProductExamineAction',                     //修改审核状态
            'ProductExamineList',                       //审核列表
            'ProductPlaceAjax',                         //产地ajax返回
            'linkage',//联动


            'ProductBrandImport',                       //品名录入
            'ProductBrandImportAction',                 //品名入库
            'ProductBrandDeleteAction',                 //品名删除
            'ProductBrandAjax',                         //品名ajax返回
            'ProductBrandIs',                           //品名是否存在

            'ProductMaterial',
            'ProductMaterialImport',                       //材质录入
            'ProductMaterialImportAction',                 //材质入库
            'ProductMaterialDeleteAction',                 //材质删除
            'ProductMaterialAjax',                         //材质ajax返回
            'ProductMaterialIs',                            //材质是否存在

            'ProductCateImport',                        //分类录入
            'ProductClassImport',                       //品类录入
            'ProductQualityImport',                     //材质录入
            'ProductQualityImportAction',               //分类，品类，材质入库
            'ProductCateImportAction',
            'ProductCateDeleteAction',                  //分类，品类，材质删除
            'ProductCateUpdateAction',                  //分类，品类，材质修改
            'ProductCateAjax',                          //分类，品类，材质ajax返回
            'ProductLevelImport',                       //等级录入
            'ProductLevelImportAction',                 //等级入库
            'ProductSpecImport',                        //规格录入
            'ProductSpecImportAction',                  //规格入库

            'GetLevelInfo',                             //获取材质等级
            'GetSpecInfo',                              //获取材质规格

            'ApiTest',                                  //API测试页

            //资源单管理
            'ManageNewResource',                         //资源单管理
            'NewResourceDeleteAction',                   //资源单删除
            'NewResourceExamine',                        //资源单审核
            'NewResourceExamineAction',                  //修改审核状态
            'NewResourceServiceAjax',                    //资源单ajax返回
            'LookExcel',                                 //浏览资源单
            'DownExcel',                                 //下载资源单
            'AddExcel',
            //采购管理
            'PurchaseResource',//采购管理
            'PurchaseResourceDetails',//采购详情
            'purchase_resource_examine',//采购审核
            'linkage',//联动
            'SelectUserMobile',    //电话查询

            //规格
            'GetSpec',

            //系统通知
            'MessageAdd',        //通知添加
            'MessageAddAction',      //通知入库
            'MessageList',        //通知列表
        ),
        //普通管理员
        AdminEnum::GENERAL_ADMIN_ROLE   => array(
            'OpinionList',                     //反馈意见
            'OpinionDeleteAction',             //删除
            'OpinionAjax',                     //ajax
            'AddInviteCode',                   //邀请码
            #登录
            'JsVerifyRegister',
            'Captcha',                        //验证码
            'Login',                           //登录
            'DisposeLogin',                             //登录验证
            'CacheCate',                        //分类缓存
            #林场
            'forest_service',                           //林场服务
            'DeleteForest',                             //删除
            'ForestServiceAjax',                        //林场ajax返回
            'EditForest',
            #仓储
            'StorageService',                           //仓储服务
            'StorageImport',                            //仓储录入
            'StorageDelete',                            //删除
            'StorageServiceAjax',                       //林场ajax返回
            'StorageEdit',                              //编辑
            #文章
            'ArticleList',                              //文章列表
            'ArticleImport',                            //文章录入
            'ArticleDelete',                            //文章删除
            'ArticleServiceAjax',                       //文章ajax返回
            'ArticleEdit',                              //文章编辑

            //广告位管理
            'AdsList',                                  //广告列表
            'AddAds',                                   //广告位添加
            'EditAds',                                  //广告位编辑
            'DelAds',                                   //广告位删除
            'AdsAjax',                                  //ajax返回

            #管理员
            'ManageAdmin',                              //管理员管理
            'AddAdmin',                                 //管理员添加
            'EditAdmin',                                //管理员编辑
            'DeleteAdmin',                              //管理员删除
            'AdminServiceAjax',                         //管理员ajax


            #日志
            'UserLog',                                  //用户日志
            'PlatformLog',                              //平台日志
            'DataLog',                                  //数据库日志
            'LogService',                               //日志
            'DeleteLog',                                //日志删除
            'LogServiceAjax',                           //日志ajax

            #商家管理
            'ManageSupplier',                           //商家管理
            'AddSupplier',                              //商家入驻
            'EditSupplier',                             //编辑商家
            'DelSupplier',                              //删除商家
            'SupplierAjax',                             //ajax返回

            #订单
            'OrderList',                                //订单列表
            'DownOrderList',                            //下单列表
            'DownOrderImport',                          //下单
            'DownOrderImportAction',                   //订单入库

            #资讯管理
            'NewsList',                                 //资讯列表
            'NewsImport',                               //资讯导入
            'NewsDeleteAction',                         //资讯刪除
            'NewsServiceAjax',                          //資訊ajax返回
            'NewsModifyAction',                         //資訊入库
            'NewsUpdateAction',                         //資訊修改


            #会员管理
            'ManageCustomer',                           //会员管理
            'MajiaList',                                //马甲列表
            'CustomerImport',                           //会员录入
            'CustomerEdit',                             //会员编辑
            'CustomerDelete',                           //会员删除
            'CustomerServiceAjax',                      //会员ajax返回


            #服务管理
            'forest_service',                           //林场服务
            'TransportService',                         //物流服务
            'TransportServiceAjax',                     //物流ajax返回
            'HarbourServiceAjax',                       //港口ajax返回
            'HarbourServiceAction',                     //港口服务

            'ForestImport',                             //林场录入
            'TransportModify',                          //物流线路录入
            'TransportModifyAction',                    //物流线路入库
            'TransportUpdateAction',                    //物流线路修改
            'TransportDeleteAction',                    //物流线路删除
            'StorageImport',                            //仓储录入
            'HarbourImport',                            //港口录入
            'HarbourDeleteAction',                      //港口删除
            'HarbourModifyAction',                      //港口入库
            'HarbourUpdateAction',                      //物流线路修改

            #订单
            'ForestNeed',                               //林场直供
            'HarbourNeed',                              //港口需求
            'StorageNeed',                              //仓储需求

            #产品管理
            'ManageProduct',                            //产品管理
            'ProductPlace',                             //产地管理
            'ProductBrand',                             //品牌管理
            'ProductCate',                              //分类管理


            'ProductImport',                            //产品录入
            'ProductImportAction',                      //产品入库
            'ProductUpdateAction',                      //产品修改
            'ProductPlaceImport',                       //产地录入
            'ProductServiceAjax',                       //产品AJAX返回
            'ProductDeleteAction',                      //产品删除
            'ProductPlaceImportAction',                 //产地入库
            'ProductPlaceUpdateAction',                 //产地修改
            'ProductPlaceDeleteAction',                 //产地删除
            'ProductPlaceAjax',                         //产地ajax返回


            'ProductBrandImport',                       //品名录入
            'ProductBrandImportAction',                 //品名入库
            'ProductBrandDeleteAction',                 //品名删除
            'ProductBrandAjax',                         //品名ajax返回
            'ProductBrandIs',                           //品名是否存在

            'ProductMaterialImport',                       //材质录入
            'ProductMaterialImportAction',                 //材质入库
            'ProductMaterialDeleteAction',                 //材质删除
            'ProductMaterialAjax',                         //材质ajax返回
            'ProductMaterialIs',                            //材质是否存在

            'ProductCateImport',                        //分类录入
            'ProductClassImport',                       //品类录入
            'ProductQualityImport',                     //材质录入
            'ProductQualityImportAction',               //分类，品类，材质入库
            'ProductCateImportAction',
            'ProductCateDeleteAction',                  //分类，品类，材质删除
            'ProductCateUpdateAction',                  //分类，品类，材质修改
            'ProductCateAjax',                          //分类，品类，材质ajax返回
            'ProductLevelImport',                       //等级录入
            'ProductLevelImportAction',                 //等级入库
            'ProductSpecImport',                        //规格录入
            'ProductSpecImportAction',                  //规格入库

            'GetLevelInfo',                             //获取材质等级
            'GetSpecInfo',                              //获取材质规格

            'ApiTest',                                  //API测试页

            //现货管理
            'ManageNewResource',                         //现货管理
            'NewResourceDeleteAction',                   //现货删除
            'NewResourceExamine',                        //现货审核
            'NewResourceExamineAction',                  //修改审核状态
            'NewResourceServiceAjax',                    //现货ajax返回
            //采购管理
            'PurchaseResource',//采购管理
            'PurchaseResourceDetails',//采购详情
            'purchase_resource_examine',//采购审核
            'linkage',//联动
            'SelectUserMobile',    //电话查询
        ),
        //编辑
       AdminEnum::EDITOR_ROLE   => array(
           'OpinionList',                     //反馈意见
           'OpinionDeleteAction',             //删除
           'OpinionAjax',                     //ajax
           'AddInviteCode',                   //邀请码
           #登录
           'Login',                                    //登录
           'DisposeLogin',                             //登录验证
           'CacheCate',                                //分类缓存
           'Captcha',                                  //验证码
           'JsVerifyRegister',

           'ManageSupplier',                           //商家管理
           'AddSupplier',                              //商家入驻
           'SupplierExamine',                          //商家审核
           'SupplierExamineList',                      //审核列表
           'SupplierExamineAction',                    //审核提交
          // 'EditSupplier',                             //编辑商家
           'ProductImport',                            //产品录入
           'ProductImportAction',                      //产品入库
           'ManageProduct',                            //产品管理
           'ManageCustomer',                           //会员管理
           'CustomerImport',                           //会员录入
           'CustomerEdit',                             //会员编辑
           //现货管理
           'ManageNewResource',                         //现货管理
           'NewResourceDeleteAction',                   //现货删除
           'NewResourceExamine',                        //现货审核
           'NewResourceExamineAction',                  //修改审核状态
           'NewResourceServiceAjax',                    //现货ajax返回
           //采购管理
           'PurchaseResource',//采购管理
           'PurchaseResourceDetails',//采购详情
           'purchase_resource_examine',//采购审核
           'linkage',//联动

           'ProductCateImport',                        //分类录入
           'ProductClassImport',                       //品类录入
           'ProductQualityImport',                     //材质录入
           'ProductQualityImportAction',               //分类，品类，材质入库
           'ProductCateImportAction',
           'ProductCateDeleteAction',                  //分类，品类，材质删除
           'ProductCateUpdateAction',                  //分类，品类，材质修改
           'ProductCateAjax',                          //分类，品类，材质ajax返回

           'ProductImport',                            //产品录入
           'ProductImportAction',                      //产品入库
           'ProductUpdateAction',                      //产品修改
           'ProductPlaceImport',                       //产地录入
           'ProductServiceAjax',                       //产品AJAX返回
           'ProductDeleteAction',                      //产品删除
           'ProductPlaceImportAction',                 //产地入库
           'ProductPlaceImport',                       //cd

           'ProductBrandImport',                       //品名录入
           'ProductBrandImportAction',                 //品名入库
           'ProductBrandDeleteAction',                 //品名删除
           'ProductBrandAjax',                         //品名ajax返回
           'ProductBrandIs',                           //品名是否存在

           'ProductMaterialImport',                       //材质录入
           'ProductMaterialImportAction',                 //材质入库
           'ProductMaterialDeleteAction',                 //材质删除
           'ProductMaterialAjax',                         //材质ajax返回
           'ProductMaterialIs',                            //材质是否存在

           'ProductPlaceUpdateAction',                 //产地修改
           'ProductPlaceDeleteAction',                 //产地删除
           'ProductExamine',                           //产品审核
           'ProductExamineAction',                     //修改审核状态
           'ProductExamineList',                       //审核列表
           'ProductPlaceAjax',                         //产地ajax返回
        ),

    );

    public static function getUdoMenus()
    {
        return self::$UdoUserMenus;
    }

    public static function getUserMenus($role_id)
    {
        return self::$userMenus[$role_id];
    }

    public static function getLeftMenu($right)
    {

        self::mkNewMenus(self::getUdoMenus());
        $rightMenus = self::getUserMenus($right);

        $aLeftMenus = array();
        foreach ($rightMenus as $menu) {
            if (self::$UdoUserMenus[$menu][self::TYPE] == self::MENU_TYPE_LEFT)
                $aLeftMenus[] = $menu;
        }

        self::$UdoLeftMenu = self::setMenus($aLeftMenus);

        return self::$UdoLeftMenu;
    }

    public static function getLeftLeafMenu()
    {
        $action = self::getCurrentAction();
        self::getRootParent($action);
        $aLeftMenu = self::$UdoLeftMenu[self::$rootParent];
        $aLeafMenu = array();
        if (array_key_exists(self::LEAF, $aLeftMenu)) {
            foreach ($aLeftMenu[self::LEAF] as $leaf) {
                $leaf['label']                   = Lang::get('system.' . $leaf['label']);
                $aLeafMenu[$leaf[self::GROUP]][] = $leaf;
            }
        }

        return $aLeafMenu;
    }

    public static function getRightMenu($right)
    {
        self::mkNewMenus(self::getUdoMenus());
        $rightMenus  = self::getUserMenus($right);
        $aRightMenus = array();
        foreach ($rightMenus as $menu) {
            if (self::$UdoUserMenus[$menu][self::TYPE] == self::MENU_TYPE_RIGHT)
                $aRightMenus[] = $menu;
        }

        return self::setMenus($aRightMenus);
    }

    public static function getTopMenu($right)
    {
        self::mkNewMenus(self::getUdoMenus());
        $rightMenus = self::getUserMenus($right);
        $aTopMenus  = array();
        foreach ($rightMenus as $menu) {
            if (self::$UdoUserMenus[$menu][self::TYPE] == self::MENU_TYPE_TOP)
                $aTopMenus[] = $menu;
        }

        return self::setMenus($aTopMenus);
    }

    public static function getButtonMenu($right)
    {
        self::mkNewMenus(self::getUdoMenus());
        $rightMenus = self::getUserMenus($right);
        $aButMenus  = array();
        foreach ($rightMenus as $menu) {
            if (self::$UdoUserMenus[$menu][self::TYPE] == self::MENU_TYPE_BUTTON)
                $aButMenus[] = $menu;
        }

        return self::setMenus($aButMenus);
    }
}